//package com.ouwen.smartpay.facadeimpl.openapi;
//
//import com.alibaba.dubbo.config.annotation.Service;
//import com.fm.common.order.NotifyOrder;
//import com.fm.core.utils.enums.ResultStatus;
//import com.ouwen.smartpay.entity.NotifyMessage;
//import com.ouwen.smartpay.entity.OrderInfo;
//import com.ouwen.smartpay.service.NotifyMessageSendService;
//import com.ouwen.smartpay.service.NotifyMessageService;
//import com.ouwen.smartpay.service.OrderInfoService;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//
///**
// * @author <a href="http://youngitman.tech">青年IT男</a>
// * @version v1.0.0
// * @className NotifyFacadeImpl
// * @description 接受交易的或其他系统异步通知
// * @JunitTest: {@link  }
// * @date 2020-04-27 10:52
// **/
//@Service(version = "1.0.0")
//public class NotifyFacadeImpl implements NotifyFacade {
//
//    Logger logger = LoggerFactory.getLogger(getClass());
//
//    @Autowired
//    private OrderInfoService orderInfoService;
//
//    @Autowired
//    private NotifyMessageService notifyMessageService;
//
//    @Autowired
//    private NotifyMessageSendService notifyMessageSendService;
//
//    /***
//     *
//     * 接受交易异步通知
//     *
//     * @author liyong
//     * @date 14:23 2020-04-27
//     * @param order
//     * @exception
//     * @return NotifyResult
//     **/
//    @Limiting(limit = 100, failStrategy = FailStrategy.FASTFAIL)
//    @Override
//    public NotifyResult notify(NotifyOrder order) {
//
//        logger.info("异步通知接受订单信息:{}", order);
//
//        try {
//
//            //订单基础校验
//            order.check();
//
//            //查询OrderInfo
//            OrderInfo orderInfo = findOrderInfo(order);
//
//            if (orderInfo == null) {
//
//                return buildResult(ResultStatus.failure, "订单不存在");
//            }
//
//            //查询NotifyMessage是否存在
//            NotifyMessage notifyMessage = findNotifyMessage(order);
//
//            //异步通知信息已经入库,不需要重复入库
//            if (notifyMessage != null) {
//
//                return buildResult(ResultStatus.success, "异步通知已经接受成功,不需要重复通知");
//            }
//
//            //执行异步通知逻辑
//            notifyMessageSendService.doNotifyMessage(order, orderInfo);
//
//            return buildResult(ResultStatus.success, "异步通知接受成功");
//
//        } catch (Exception e) {
//
//            logger.error("OpenApi接受异步通知发生异常:", e);
//
//            return buildResult(ResultStatus.failure, e.getMessage());
//
//        }
//    }
//
//    private NotifyMessage findNotifyMessage(NotifyOrder order) {
//
//        return notifyMessageService.findByPartnerIdAndSubPartnerIdAndMerchOrderNo(order.getPartnerId(), order.getSubPartnerId(), order.getMerchOrderNo());
//    }
//
//    private OrderInfo findOrderInfo(NotifyOrder order) {
//
//        return orderInfoService.findOrderInfoByPartnerIdAndMerchOrderNo(order.getPartnerId(), order.getSubPartnerId(), order.getMerchOrderNo());
//    }
//
//    private NotifyResult buildResult(ResultStatus status, String message) {
//
//        NotifyResult notifyResult = new NotifyResult();
//
//        notifyResult.setStatus(status);
//
//        notifyResult.setCode(status.getCode());
//
//        notifyResult.setDescription(message);
//
//        return notifyResult;
//    }
//
//
//}
